package com.fantasy.demo1.config;


import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 *  @PostConstruct和@PreDestroy 是两个作用于 Servlet 生命周期的注解
 *
 * @PostConstruct : 用来修饰方法，标记在项目启动的时候执行这个方法,一般用来执行某些初始化操作比如全局配置。PostConstruct 注解的方法会在构造函数之后执行,Servlet 的init()方法之前执行。
 * @PreDestroy : 当 bean 被 Web 容器的时候被调用，一般用来释放 bean 所持有的资源。。@PreDestroy 注解的方法会在Servlet 的destroy()方法之前执行。
 *
 *  被这个注解修饰的方法需要满足下面这些基本条件：
 * 非静态
 * 该方法必须没有任何参数，除非在拦截器的情况下，在这种情况下，它接受一个由拦截器规范定义的InvocationContext对象
 * void()也就是没有返回值
 * 该方法抛出未检查的异常
 */
@Configuration
public class MyConfiguration1 {

    public MyConfiguration1() {
        System.out.println("构造方法被调用");
    }

    @PostConstruct
    private void init() {
        System.out.println("PostConstruct注解方法被调用");
    }

    @PreDestroy
    private void shutdown() {
        System.out.println("PreDestroy注解方法被调用");
    }

}
